package movilmax.sia_corp.action;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import movilmax.sia_corp.model.Listax;
import movilmax.sia_corp.model.Usuario;
import apli.conectar.Conectar;
import basedatos.Fecha;
import basedatos.Resultado;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class RegistroActividadesCli extends ActionSupport{
	private static final long serialVersionUID = 3981105934364841769L;
	
	private String cod_cliente;
	private String contrato;
	private String actividad;
    private String detalle;
    private String obs;
    private String obs2;
    private String opc;
    
	private List<Listax>  actividades;
	private List<Listax>  detalle_act;
	
	/*public void validate(){	
		try{
			if ( getCod_cliente().length() == 0 ){	
				this.addActionError("Debe seleccionar el cliente" );
				return;
			}
			if(this.actividad!=null){
				if ( this.getActividad().equals("-1") || this.getActividad().trim().equals("") ){	
					this.addActionError( "Debe seleccionar la actividad" );
					return;
				}
			}
			if(this.detalle !=null){
				if ( this.getDetalle().equals("-1") || this.getDetalle().trim().equals("") ){	
					this.addActionError( "Debe seleccionar el detalle" );
					return;
				}
			}
			if ( this.getObs().length() == 0 ){	
				this.addActionError( "Debe ingresar las observaciones del operador" );
				return;
			}
			if ( this.getObs2().length() == 0 ){	
				this.addActionError( "Debe ingresar las observaciones del cliente" );
				return;
			}
			
		}catch(Exception err){
				
		}
	} */
	
	@SuppressWarnings("rawtypes")
	public String mostrar() throws Exception {
		 Map session = ActionContext.getContext().getSession();
		 Usuario USUARIO = (Usuario)session.get("ses_usuario");
	     if (USUARIO==null){	
	    	this.addActionError( "La sesion del usuario ha caducado" ); 
	    	return ERROR;
	     }
	     if(this.getCod_cliente()==null){
	    	 this.addActionError( "Debe indicar codigo" ); 
		     return ERROR; 
	     }
	     return SUCCESS;
   }
   @SuppressWarnings("rawtypes")
  public String guardar() throws Exception {
		Map session = ActionContext.getContext().getSession();
	    Usuario USUARIO = (Usuario)session.get("ses_usuario");
	    if (USUARIO!=null){	
	    	Conectar BASE= new Conectar();
	    	if(BASE.getMsg().equals("SI")){	
	    		try{
	    			if(this.actividad!=null){
	    				if ( this.getActividad().equals("-1") || this.getActividad().trim().equals("") ){	
	    					this.addActionError( "Debe seleccionar la actividad" );
	    					return ERROR;
	    				}
	    			}
	    			if(this.detalle !=null){
	    				if ( this.getDetalle().equals("-1") || this.getDetalle().trim().equals("") ){	
	    					this.addActionError( "Debe seleccionar el detalle" );
	    					return ERROR;
	    				}
	    			}
	    			if ( this.getObs().length() == 0 ){	
	    				this.addActionError( "Debe ingresar las observaciones del operador" );
	    				return ERROR;
	    			}
	    			if ( this.getObs2().length() == 0 ){	
	    				this.addActionError( "Debe ingresar las observaciones del cliente" );
	    				return ERROR;
	    			}
	    			Fecha F=new Fecha();
	    			String FECHA=F.getFecha();
	    			String HORA=F.getHoras();
	    			String contrato="0";
	    			Resultado RCS=BASE.getBaseDatos().consultar("Select contrato from contratos where cliente='"+this.getCod_cliente()+"' and not status='ANUALDO' ");
	    			if(RCS.RP){
	    				contrato=RCS.getCadena("contrato");
	    			}
	    			String codigo=BASE.getBaseDatos().generarCodigo("actividades", "codigo");
  		    	    String SQL="INSERT INTO actividades " +
  		    		"(codigo,contrato,tipo,tipo_det,obs_operador,obs_cliente,usuario,fecha,hora,nro_ticket,numero) "+
  		    		"VALUES("+codigo+",'"+ contrato +"','"+ this.getActividad() +"','"+ this.getDetalle() +"','"+ this.getObs() +"','"+ this.getObs2() +"','"+ USUARIO.getUsuario() +"','"+ FECHA +"','"+HORA+"','-1','02120000000' )";
  		    	    if (BASE.getBaseDatos().ejecutar(SQL) ) {
  		    	    	this.addActionMessage("Actividad registrada al contrato "+contrato+" a las ( "+FECHA+" "+HORA+" ) ");
  		    	    	return SUCCESS; 	
  		    	    }else{
  		    	    	this.addActionError("No se pudo registrar la actividad");
  		    	    }
  		    	    BASE.getBaseDatos().cerrarConexion(); 
	    	    }catch(Exception err ){
				    this.addActionError("Error: "+err.toString());
				    BASE.getBaseDatos().cerrarConexion(); 
			    } 
		   }else
			   this.addActionError("No hay conexion al servidor");  
	   } 
	  else
		 this.addActionError("La sesion del usuario ha caducado");   	
	   return ERROR;
   } 	
   @SuppressWarnings("rawtypes")
public String listar_actividades(Conectar BASE){
		actividades=new ArrayList<Listax>();
		Map session = ActionContext.getContext().getSession();
	    Usuario USUARIO = (Usuario) session.get("ses_usuario");
				  try{
					  
					  if(USUARIO==null){
						  	this.addActionError("La sesion del usuario ha caducado" ); 
							return ERROR;
					  }
			    	  //String SQL="Select * From tipos_actividad Where mostrar='1' and ps='1' Order by descripcion";
					  String SQL="select T.cod,T.descripcion from tipos_actividad T, tipos_actividad_dep X where X.departamento='"+ USUARIO.getDepartamento().getCod() + "'  and T.cod=X.tipo_act and X.mostrar='1' and T.mostrar='1' Order by T.descripcion ";
					  Resultado  RCS=BASE.getBaseDatos().consultar(SQL);
					  //System.out.println("***************"+SQL+"***************"+RCS.RP);
					  if(RCS.RP){
						  do{ 
							  Listax LST=new Listax();
							  LST.setCod(RCS.getCadena("cod"));
							  LST.setDescripcion(RCS.getCadena("descripcion"));
//							  System.out.println("****************** CODIGO: "+RCS.getCadena("cod")+"  DESCRIPCION: "+RCS.getCadena("descripcion"));
							  actividades.add(LST);
						  }while(RCS.sigItem()); 
					  }
				   }catch(Exception err  ){
						//hubo un error .....
				   }  
		return SUCCESS;
	} 
   
	@SuppressWarnings("rawtypes")
	public String listar_det_actividades(Conectar BASE){
			detalle_act=new ArrayList<Listax>();
			Map session = ActionContext.getContext().getSession();
	    	Usuario USUARIO = (Usuario) session.get("ses_usuario");
				  if(USUARIO==null){
					 	this.addActionError("La sesion del usuario ha caducado" ); 
						return ERROR;
				  }
			if(actividad!=null){
				try{
					String SQL="Select D.cod,D.descripcion from tipos_actividad_det D,detalle_tipos_actividad X "+
				   " where X.actividad='" + this.getActividad() + "' and X.dep='"+USUARIO.getDepartamento().getCod()+"' and X.detalle=D.cod and D.mostrar ='1' and X.mostrar='1' and not D.cod in('5','15')  Order By D.descripcion";
					Resultado RCS=BASE.getBaseDatos().consultar(SQL);
					if(RCS.RP){
						  do{ 
							 Listax LST=new Listax();
							 LST.setCod(RCS.getCadena("cod"));
							 LST.setDescripcion(RCS.getCadena("descripcion"));
							 detalle_act.add(LST);
						  }while(RCS.sigItem()); 
					}
				 }catch(Exception err  ){
						//hubo un error .....
				 }
			}	
			return SUCCESS;
	}
		
	@SuppressWarnings("rawtypes")
	public String getJSON(){
		  Map session = ActionContext.getContext().getSession();
		  Usuario USUARIO = (Usuario)session.get("ses_usuario");
		  if (USUARIO==null){
			  this.addActionError("La sesion del usuario ha caducado");
			  return ERROR;
		  }
		 Conectar BASE= new Conectar();
		  if(BASE.getMsg().equals("SI")){
				  listar_actividades(BASE);
				  listar_det_actividades(BASE);   
			      BASE.getBaseDatos().cerrarConexion(); 
			  return SUCCESS;
		  }else{
			  this.addActionError("No hay conexion al servidor");
		      return ERROR;
		  }
   }
	
	public String getCod_cliente() {
		return cod_cliente;
	}
	public void setCod_cliente(String cod_cliente) {
		this.cod_cliente = cod_cliente;
	}
	public String getActividad() {
		return actividad;
	}
	public void setActividad(String actividad) {
		this.actividad = actividad;
	}
	public String getDetalle() {
		return detalle;
	}
	public void setDetalle(String detalle) {
		this.detalle = detalle;
	}
	public String getObs() {
		return obs;
	}
	public void setObs(String obs) {
		this.obs = obs;
	}
	
	public List<Listax> getActividades() {
		return actividades;
	}

	public void setActividades(List<Listax> actividades) {
		this.actividades = actividades;
	}

	public List<Listax> getDetalle_act() {
		return detalle_act;
	}
	public void setDetalle_act(List<Listax> detalle_act) {
		this.detalle_act = detalle_act;
	}
	public String getOpc() {
		return opc;
	}
	public void setOpc(String opc) {
		this.opc = opc;
	}
	public String getObs2() {
		return obs2;
	}
	public void setObs2(String obs2) {
		this.obs2 = obs2;
	}
	public String getContrato() {
		return contrato;
	}
	public void setContrato(String contrato) {
		this.contrato = contrato;
	} 
	
	
}
